# -*- coding: utf-8 -*-
from django.db import models
from stdimage import StdImageField
from datetime import datetime
from tagging.fields import TagField
from tagging.models import Tag
from django.core.urlresolvers import reverse

PUBLICACAO_CHOICES = (('0','Empresa'),('1','Profissional'),)

class GaleriaVideos(models.Model):
    class Meta:
        verbose_name_plural = 'Galeria de vídeos'
    titulo=models.CharField('Título',max_length=100)
    url=models.CharField('Link do vídeo',max_length=200)
    dt_publicacao = models.DateTimeField('Data de publicação',default=datetime.now)
    autor = models.CharField(max_length=50)

    def __unicode__(self):
        return self.titulo

class Galeria(models.Model):
    titulo = models.CharField('Título',max_length=50)
    imagem = StdImageField(upload_to='media',size=(550,366))
    dt_publicacao = models.DateTimeField('Data de publicação',default=datetime.now)
    autor = models.CharField(max_length=50)
    comentario = models.CharField('Comentário',max_length=255)
    class Meta:
        verbose_name_plural = 'Galeria de imagens'
    def __unicode__(self):
        return self.titulo

class Noticias(models.Model):
    publicar=models.BooleanField(default=True)
    titulo = models.CharField('Título',max_length=100)
    subtitulo = models.CharField(max_length=200)
    chamada = models.CharField(max_length=50)
    autor = models.CharField(max_length=50)
    conteudo = models.TextField('Conteúdo')
    publicacao = models.DateTimeField('Data de publicação',default=datetime.now,blank=True)
    imagem_destaque=StdImageField(upload_to='noticia', size=(608, 300))
    imagens = models.ManyToManyField(Galeria,blank=True,null=True)
    videos = models.ManyToManyField(GaleriaVideos,blank=True,null=True)
    fonte = models.CharField(max_length=100)
    tags = TagField()
    slug = models.SlugField(max_length=100, blank=True)
    
    def set_tags(self, tags):
        Tag.objects.update_tags(self, tags)

    def get_tags(self):
        return Tag.objects.get_for_object(self)

    def get_absolute_url(self):
        return reverse('ingenium.views.noticia', kwargs={'slug': self.slug})

    class Meta:
        verbose_name_plural = 'Cadastro de notícias'
    def __unicode__(self):
        return self.titulo

class Artigo(models.Model):
    class Meta:
        verbose_name_plural = 'Artigos'
    publicar=models.BooleanField(default=True)
    titulo = models.CharField('Título',max_length=100)
    subtitulo = models.CharField(max_length=200)
    autor = models.CharField(max_length=50)
    autor_desc = models.TextField('Biografia',max_length=500)
    imagem_destaque=StdImageField(upload_to='artigo', size=(176, 115))
    resumo = models.TextField('Resumo')
    conteudo = models.TextField('Conteúdo')
    publicacao = models.DateTimeField('Data de publicação',default=datetime.now,blank=True)
    tags = TagField()
    slug = models.SlugField(max_length=100, blank=True)
    
    def set_tags(self, tags):
        Tag.objects.update_tags(self, tags)

    def get_tags(self):
        return Tag.objects.get_for_object(self)  

    class Meta:
        verbose_name_plural = 'Cadastro de artigos'

    def get_absolute_url(self):
        return reverse('ingenium.views.artigo', kwargs={'slug': self.slug})

    def __unicode__(self):
        return self.titulo
        
class Eventos(models.Model):
    titulo = models.CharField('Título',max_length=50)
    diadoevento = models.DateField('Dia do evento')
    local = models.CharField(max_length=30)
    conteudo = models.TextField('Conteúdo',max_length=500,)
    eventofoto = StdImageField('Foto',upload_to='event', size=(175,165))
    destinado = models.CharField('Destinado*',max_length=1,choices=PUBLICACAO_CHOICES)
    publica = models.DateTimeField('Data de publicação',default=datetime.now,blank=True,null=True)
    tags = TagField()
    
    def set_tags(self, tags):
        Tag.objects.update_tags(self, tags)

    def get_tags(self):
        return Tag.objects.get_for_object(self)  

    class Meta:
        verbose_name_plural = 'Cadastro de eventos'

    def __unicode__(self):
        return self.titulo

class Parceiros(models.Model):
    class Meta:
        verbose_name_plural = 'Cadastro de parceiros'
    publicar=models.BooleanField(default=True)
    nome = models.CharField(max_length=100)
    site = models.URLField(blank=True,null=True)
    publicacao = models.DateTimeField('Data de publicação',default=datetime.now,blank=True,null=True)
    imagem = StdImageField(upload_to='parceiros', size=(126,76))

    class Meta:
        verbose_name_plural = 'Cadastro de parceiros'
		
    def __unicode__(self):
        return self.nome

class Destaques(models.Model):
    class Meta:
        verbose_name_plural = 'Área de destaques'
    publicar=models.BooleanField(default=True)
    titulo = models.CharField('Título',max_length=100)
    subtitulo = models.CharField(max_length=200)
    autor = models.CharField(max_length=50)
    conteudo = models.TextField('Conteúdo')
    publicacao = models.DateTimeField('Data de publicação',default=datetime.now, blank=True)
    imagem_destaque= models.ImageField(upload_to='destaque')
    imagens = models.ManyToManyField(Galeria,blank=True,null=True)
    videos = models.ManyToManyField(GaleriaVideos,blank=True,null=True)
    tags = TagField()
    slug = models.SlugField(max_length=100, blank=True)

    def get_absolute_url(self):
        return reverse('ingenium.views.destaque', kwargs={'slug': self.slug})
    
    def set_tags(self, tags):
        Tag.objects.update_tags(self, tags)

    def get_tags(self):
        return Tag.objects.get_for_object(self)  

    class Meta:
        verbose_name_plural = 'Cadastro de destaques'
	
    def __unicode__(self):
        return self.titulo

class Enquete(models.Model):
    pergunta = models.CharField(max_length=200)
    data_publicacao = models.DateTimeField('date published')

    class Meta:
        verbose_name_plural = 'Cadastro de enquetes'
    def __unicode__(self):
        return self.pergunta

class Alternativa(models.Model):
    pergunta = models.ForeignKey(Enquete)
    alternativa = models.CharField(max_length=200)
    votos = models.IntegerField(default = 0)
        
    def __unicode__(self):
        return self.alternativa


# SIGNALS
from django.db.models import signals
from django.template.defaultfilters import slugify

def destaques_pre_save(signal, instance, sender, **kwargs):
    instance.slug = slugify(instance.titulo)

signals.pre_save.connect(destaques_pre_save, sender=Destaques)

def noticias_pre_save(signal, instance, sender, **kwargs):
    instance.slug = slugify(instance.titulo)

signals.pre_save.connect(noticias_pre_save, sender=Noticias)

def artigo_pre_save(signal, instance, sender, **kwargs):
    instance.slug = slugify(instance.titulo)

signals.pre_save.connect(artigo_pre_save, sender=Artigo)